QuickOPC User's Guide and Reference
ObtainNewCertificate(IEasyUAClientApplication,UAEndpointDescriptor,IProgress<String>) Method
Example 



OpcLabs.EasyOpcUA Assembly > OpcLabs.EasyOpc.UA.Application.Extensions Namespace > IEasyUAClientApplicationExtension Class > ObtainNewCertificate Method : ObtainNewCertificate(IEasyUAClientApplication,UAEndpointDescriptor,IProgress<String>) Method
The OPC UA client application object that will perform the operation.
The GDS endpoint acting as OPC UA certificate manager (CM).
A provider for progress updates.
Syntax
'Declaration
 
<ExtensionAttribute()>
<NotNullAttribute()>
Public Overloads Shared Function ObtainNewCertificate( _
   ByVal application As IEasyUAClientApplication, _
   ByVal gdsEndpointDescriptor As UAEndpointDescriptor, _
   ByVal progress As IProgress(Of String) _
) As PkiCertificate
'Usage
 
Dim application As IEasyUAClientApplication
Dim gdsEndpointDescriptor As UAEndpointDescriptor
Dim progress As IProgress(Of String)
Dim value As PkiCertificate
 
value = IEasyUAClientApplicationExtension.ObtainNewCertificate(application, gdsEndpointDescriptor, progress)

Parameters

application
The OPC UA client application object that will perform the operation.
gdsEndpointDescriptor
The GDS endpoint acting as OPC UA certificate manager (CM).
progress
A provider for progress updates.

Return Value

Returns the certificate obtained from the certificate manager.
Remarks

The operation is synchronous. It can take considerable time to execute, because it involves multiple steps, and waiting for a finalization of the request by the GDS (see the OpcLabs.EasyOpc.UA.Gds.IEasyUACertificateManagementClient.FinishRequest method).

For an alternative based on asynchronous programming model (APM, System.IAsyncResult) pattern, see the BeginObtainNewCertificate method and related extension methods.

For a task-based asynchronous programming pattern alternative, see the ObtainNewCertificateAsync(IEasyUAClientApplication,UAEndpointDescriptor) extension method and its overloads.

Example
// Shows how to obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage,
// with progress reporting.

using System;
using OpcLabs.BaseLib.Extensions;
using OpcLabs.BaseLib.Security.Cryptography.PkiCertificates;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.Application;
using OpcLabs.EasyOpc.UA.Application.Extensions;
using OpcLabs.EasyOpc.UA.Extensions;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UADocExamples.Application._IEasyUAClientApplication
{
    partial class ObtainNewCertificate
    {
        public static void Progress()
        {
            // Define which GDS we will work with.
            UAEndpointDescriptor gdsEndpointDescriptor = 
                ((UAEndpointDescriptor)"opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer")
                .WithUserNameIdentity("appadmin", "demo");

            // Obtain the client application service.
            var client = new EasyUAClient();
            IEasyUAClientApplication clientApplication = client.GetService<IEasyUAClientApplication>();

            // Display which application we are about to work with.
            Console.WriteLine("Application URI string: {0}",
                clientApplication.GetApplicationElement().ApplicationUriString);

            // Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
            PkiCertificate certificate;
            try
            {
                certificate = clientApplication.ObtainNewCertificate(gdsEndpointDescriptor,
                    new Progress<string>(s => Console.WriteLine("Progress: {0}", s)));
            }
            catch (UAException uaException)
            {
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message);
                return;
            }

            // Display results
            Console.WriteLine("Certificate: {0}", certificate);
        }
    }
}
' Shows how to obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage,
' with progress reporting.

Imports OpcLabs.BaseLib.Extensions
Imports OpcLabs.BaseLib.Security.Cryptography.PkiCertificates
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.Application
Imports OpcLabs.EasyOpc.UA.Application.Extensions
Imports OpcLabs.EasyOpc.UA.Extensions
Imports OpcLabs.EasyOpc.UA.OperationModel

Namespace UADocExamples.Application._IEasyUAClientApplication
    Partial Friend Class ObtainNewCertificate
        Public Shared Sub Progress()

            ' Define which GDS we will work with.
            Dim gdsEndpointDescriptor As UAEndpointDescriptor =
                New UAEndpointDescriptor("opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer") _
                .WithUserNameIdentity("appadmin", "demo")

            ' Obtain the client application service.
            Dim client = New EasyUAClient()
            Dim clientApplication = client.GetService(Of IEasyUAClientApplication)()

            ' Display which application we are about to work with.
            Console.WriteLine("Application URI string: {0}",
                clientApplication.GetApplicationElement().ApplicationUriString)

            ' Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
            Dim certificate As PkiCertificate
            Try
                certificate = clientApplication.ObtainNewCertificate(gdsEndpointDescriptor,
                    New Progress(Of String)(Sub(s) Console.WriteLine("Progress: {0}", s)))
            Catch uaException As UAException
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
                Exit Sub
            End Try

            ' Display results
            Console.WriteLine("Certificate: {0}", certificate)
        End Sub
    End Class
End Namespace
Requirements

Target Platforms: .NET Framework: Windows 7 with SP1, Windows Server 2012; .NET Core: Linux, Microsoft Windows

See Also

Reference

IEasyUAClientApplicationExtension Class
IEasyUAClientApplicationExtension Members
Overload List